#include "util.hpp"
#include "config.hpp"
#include "data.hpp"
#include "HotManager.hpp"
#include "service.hpp"
#include <thread>

// void FileUtilTest(const string& filename)
// {
//     // Util::FileUtil file(filename);
//     // cout<<file.FileSize()<<endl;
//     // cout<<file.LastAtime()<<endl;
//     // cout<<file.LastMTime()<<endl;
//     // cout<<file.FileName()<<endl;

//     // string body;
//     // file.GetContent(&body);

//     // Util::FileUtil file1("hello.txt");
//     // file1.SetContent(body);

//     // file.Compress(filename+".zip");
//     // file.UnCompress("hello.txt");


//     vector<string> arr;
//     Util::FileUtil file(filename);
//     file.CreateDirctory();
//     file.ScanDirectory(&arr);
//     for(auto& a:arr)
//     {
//         cout<<a<<endl;
//     }
// }

// void JsonTest()
// {
//     const char* name = "小明";
//     int age=18;
//     float score[] = {77.4,23.6,32.6};
//     Json::Value root;
//     root["姓名"] = name;
//     root["年龄"] = age;
//     root["成绩"].append(score[0]);
//     root["成绩"].append(score[1]);
//     root["成绩"].append(score[2]);

//     string body;
//     Util::JsonUtil::Serialize(root,&body);
//     cout<<body<<endl;

//     Json::Value r;
//     Util::JsonUtil::UnSerialize(body,&r);
//     cout<<r["姓名"].asString()<<endl;
//     cout<<r["年龄"].asInt()<<endl;
//     for(int i=0;i<r["成绩"].size();++i)
//     {
//         cout<<r["成绩"][i]<<" ";
//     }
//     cout<<endl;

// }

void ConfigTest()
{
    cloud::Config* config = cloud::Config::GetInstance();
    cout<<config->GetHoTime()<<endl;
    cout<<config->GetServerPort()<<endl;
    cout<<config->GetServerIp()<<endl;
    cout<<config->GetDownloadPrefix()<<endl;
    cout<<config->GetPackFileSuffix()<<endl;
    cout<<config->GetPackDir()<<endl;
    cout<<config->GetBackDir()<<endl;
    cout<<config->GetBackupFile()<<endl;
}

cloud::DataManager* _data;
void HotManager()
{
    
    cloud::HotManager hot;
    hot.RunModule();
}

void ServiceTest()
{
    cloud::Service ser;
    ser.RunModule();

}

int main(int argc,char* argv[])
{
    _data = new cloud::DataManager();
    //FileUtilTest(argv[1]);
    //JsonTest();
    //ConfigTest();
    //HotManager();
    thread Hot_Manager_thread(HotManager);
    thread Service_thread(ServiceTest);
    Hot_Manager_thread.join();
    Service_thread.join();
    return 0;
}